The present invention relates generally to the fields of distributed computer systems, object-oriented programming, and distributed object environments, and more specifically to methods and apparatus for implementing and using an object-oriented system architecture and operating environment for digital information appliances, networked computers/devices, and conventional computers.
Digital information appliances (DIA) are electronic devices designed to perform a specific function or group of functions more efficiently than would a conventional computer system. Like computer systems, information appliances may be interconnected with a network such as the INTERNET to provide content and functions which would not be available when the appliances operated independently. Preferably, such network connections are transparent to the user so that the complexity of the underlying computer network is masked. In this manner, information appliances provide advantages in simplicity of operation and computing ease of use to their users.
As the proliferation of digital information appliances accelerates, it will become necessary to develop a standard system architecture and operating environment to facilitate their use and interconnection with each other and other networked devices. Such a system architecture may utilize a distributed object model employing object oriented programing methods. Object oriented programming is a programming paradigm (method) wherein a program is organized as a collection of discrete objects that are self-contained collections of data structures and routines that interact with that data. Such objects encapsulate related data and procedures so as to hide that information by allowing access to the data and procedures only through the object""s published interface. Hence changes to the data and or procedures of the object are isolated from other objects. This provides an architecture that is more easily maintained since changes to an object""s code does not affect other objects.
Likewise, object oriented programming methods provide for inheritance of an object""s characteristics into another class of object. Thus, an object may be derived from a first object to form a second object which xe2x80x9cinheritsxe2x80x9d certain properties of its parent object. This allows for both (1) the formation of subclasses of objects having more specialized features and/or capabilities, and (2) the reuse of individual objects in different programs. Thus, libraries of proven objects may be developed which may be used repeatedly in different applications.
In developing a standard appliance system architecture, it is desirable to allow access to objects in a transparent fashion so that objects created in different programming languages and objects residing on different appliances, network servers, or computer systems that are networked together are accessible to the user without extensive modification of the user""s programming code. For computer networks, this capability may be provided by object oriented distributed environments such as the common object request broker architecture (CORBA). Such system architectures are based upon a client-server model, in which object servers provide public interfaces to object-clients that make requests of the object servers. Typically in such systems, the servers are objects consisting of data and associated methods. The object clients obtain access to the object servers by sending them messages which are mediated by the distributed system. When the server object receives the message it invokes the appropriate method and transmits the result back to the object client. The object-client and object server communicate through an Object Request Broker (ORB) which is used to locate the various distributed objects and establish communication between the objects and the client. However, such existing distributed object architectures require that all transactions (communications between client objects and server objects) must pass through an ORB. As a result, the ORB becomes a single failure point which could potentially disable such a system. Further, an ORB typically requires a large amount of memory. Thus, architectures such as CORBA would be unsuitable for xe2x80x9cthinxe2x80x9d (simple) appliances which have a limited amount of memory. The JIM technology from Sun Microsystems is another attempt at addressing the same problem. The architecture and implementation of JIM is similar to that of CORBA in a number of ways: JINI-enabled devices typically communicate with a JINI server, wherein the server acts as a central node in the JINI network. The JINI Server will upload drivers and services to each JINI device as needed. When using a server, JINI has the same fault problems as CORBA. When JINI is operated without a server it provides a very small feature set.
In a distributed environment the architecture has to enable devices with different hardware architecture, software architecture and operating systems to operate together. CORBA addresses this by requiring that CORBA applications use an interface description language (IDL) to communicate with the server. JIM addresses this by specifying communication protocols (i.e. by utilizing JAVA), thereby relying on JAVA resolving most of the architectural differences. In both cases, the architecture imposes a new language on the developer of the devices on the network.
For many types of computing devices it may also be necessary to transparently remote the execution of an object. Remoting execution allows an object to live and move around on the network. That allows for applications where resources and capabilities on the network automatically can be requested and invoked by any one device. CORBA does not have such a capability and JIM/JAVA have no automatic transparent remote capability. In JAVA all remote execution is created and controlled by the application, typically using the RMI environment within the Java language.
Consequently, it would be advantageous to develop an object oriented system which, for example could be employed as a standard appliance system architecture. Such an information appliance transaction system would provide greater fault tolerance than conventional object based architectures, and may be implemented on thin appliances having a limited amount of memory. The system architecture should allow management of transactions performed through the information appliances, transparent use of resources locally or on the network, and allow information appliances to be created in any software programming language.
The present invention provides an object driven software architecture that allows objects written in any programming language running on any operating system or hardware to communicate with any other object written in any other programming language running on any other operating system or any other hardware including objects executing on the same system or executing on different systems coupled via a network.
In one embodiment of the invention, the object driven software architecture provides the capability to execute transactions, including financial transactions, across a distributed network. The present invention allows for appliance transaction system allows content/service providers to control distribution of the content or services they furnish, and provides novel business process features such as automatic micro-billing of events and instances wherein minuscule requests and tasks of very low value may be billed and monies collected where doing so was otherwise impractical. The distributed object architecture provides dynamic support for multiple simultaneous payment algorithms and for easily modifying or updating the payment algorithms as desired. Further, the present invention provides for automatic offline or online transactions with deferred connections such that payment for a transaction may be secured prior to actually completing the transaction such that the user may obtain the paid for content even without an immediate network connection. Additionally, the present invention provides central authentication of objects of the system such that one object may verify the validity of any other object.
The invention further provides a digital appliance that is capable of utilizing the distributed object system without regard to whether the appliance is embodied as a hardware device or embodied as software (i.e. a virtual appliance) capable of being executed by any other hardware device such that the hardware device is indistinguishable from the software device.
To accomplish the above listed objects, the present invention provides a method for executing a task in a distributed object information handling system. In one embodiment, the method includes steps for calling an object to execute a task requested by an application by transferring the request to an interface object, locating an implementation object for executing the task, upon locating the implementation object, creating an instance of the implementation object and then passing the request from the interface object to the implementation object, executing the task with the implementation object whereby a result of the task is produced, passing the result from the implementation object to the interface object, and passing the result to the application.
To further accomplish the above listed objects, the present invention provides a distributed object information handling system. In one embodiment, the information handling system includes an interface object for interfacing with an application, a message bus for passing information between the interface object and an implementation object, and an executive for locating the implementation object wherein the executive creates an instance of the implementation object upon locating the implementation object such that the implementation object executes a task requested by the application and passes a result of the task to the application via the interface object.
In further accomplishment of the above listed objects, the present invention provides a system for implementing a transaction in a distributed object information handling system. In one embodiment, the system includes means for transmitting a request that requires a transaction, the transmitting means including an interface object for interfacing with an application generating the request, means for authorizing the transaction, the authorizing means including a first implementation object for receiving the request, authorizing the transaction, and for transmitting authorization of the transaction, and means for executing the task, the executing means including a second implementation object for receiving authorization of the transaction and for transmitting a result of the task to the transmitting means.
To additionally accomplish the above listed objects, the invention provides a method for billing a transaction on a distributed object system. In one embodiment, the method includes steps for receiving a command to perform a task, determining whether the task has been paid for by querying a counter object, in the event the task has been paid for, incrementing the counter object, and performing the task.
Furthermore, to accomplish the above listed objects, the present invention provides a method for optimally selecting an object in a distributed object system. In one embodiment, the method includes steps for monitoring utilization of an appliance, storing object utilization information for identifying previously performed tasks, determining whether to utilize a previously performed task, and, in the event it is determined to utilize a previously performed task, loading a corresponding object for executing the previously performed task.
It is to be understood that both the forgoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention as claimed. The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate embodiments of the invention and together with the general description, serve to explain the principles of the invention.